#!/usr/bin/env bash

# Inspired on https://github.com/adriancooney/Taskfile
#
# Install an alias, to be able to simply execute `run`
# echo 'alias run=./scripts/run' >> ~/.aliases
#
# Define Docker Compose command prefix...
set -e

if [ $? == 0 ]; then
    DOCKER_COMPOSE="docker compose"
else
    DOCKER_COMPOSE="docker-compose"
fi

function help {
    echo "$0 <task> <args>"
    echo "Tasks:"
    compgen -A function | cat -n
}

# function sync:v3 {
#     if [ -z "$1" ]; then
#         echo -e "Please provide a version.\n\nExample: run sync:v3 3.12.32"
#         exit 1
#     fi
#     skopeo copy --all docker://ghcr.io/coollabsio/coolify:$1 docker://coollabsio/coolify:$1
# }
function test {
    docker exec -t coolify php artisan test --testsuite=Feature
}
function sync:bunny {
    php artisan sync:bunny --env=secrets
}

# function queue {
#     bash spin exec -u webuser coolify php artisan queue:listen
# }

# function horizon {
#     bash spin exec -u webuser coolify php artisan horizon -vvv
# }

# function schedule {
#     bash spin exec -u webuser coolify php artisan schedule:work
# }

# function schedule:run {
#     bash spin exec -u webuser coolify php artisan schedule:run
# }

# function db {
#     bash spin exec -u webuser coolify php artisan db
# }
# function db:seed {
#     bash spin exec -u webuser coolify php artisan migrate --seed
# }

# function db:migrate {
#     bash spin exec -u webuser coolify php artisan migrate --step
# }

function db:reset {
    bash spin exec -u webuser coolify php artisan migrate:fresh --seed
}
function db:reset-prod {
    bash spin exec -u webuser coolify php artisan migrate:fresh --force --seed --seeder=ProductionSeeder ||
        php artisan migrate:fresh --force --seed --seeder=ProductionSeeder
}

function mfs {
    db:reset
}

function coolify {
    bash spin exec -u webuser coolify bash
}

function coolify:root {
    bash spin exec coolify bash
}
function coolify:proxy {
    docker exec -ti coolify-proxy sh
}

function redis {
    docker exec -ti coolify-redis redis-cli
}

function vite {
    bash spin exec vite bash
}

function tinker {
    bash spin exec -u webuser coolify php artisan tinker
}

# function build:helper {
#     act -W .github/workflows/coolify-helper.yml --secret-file .env.secrets
# }
function default {
    help
}

TIMEFORMAT="Task completed in %3lR"
time "${@:-default}"
